package cn.b.sky.mes.pp.dao;

import java.util.List;

import cn.b.sky.mes.pp.model.ProductionConfirm;
import cn.b.sky.mes.pp.model.ProductionControl;
import cn.b.sky.mes.pp.model.ProductionOperation;
import cn.b.sky.mes.pp.model.ProductionOrder;
import cn.b.sky.mes.pp.model.condition.ProductionOperationCondition;
import org.apache.ibatis.annotations.Param;

/**
 * 
 * <strong>Title : ProductionOrderConfirmDao.java<br>
 * </strong> <strong>Package : cn.b.sky.mes.pp.dao<br>
 * </strong> <strong>Description : </strong>生产订单报工数据接口<br>
 * <strong>Create on : 2015-10-9 下午01:40:01<br>
 * </strong>
 * <p>
 * 
 * @author zhaoxin01<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 *          <strong>修改历史:</strong><br>
 *          修改人 | 修改日期 | 修改描述<br>
 *          -------------------------------------------<br>
 * <br>
 * <br>
 */
public interface ProductionOrderConfirmDao {

  /**
   * 
   * <strong>Title : selectPOConfirmOperationByPO<br>
   * </strong> <strong>Description : </strong>获得订单明细对应的确认点<br>
   * <strong>Create on : 2015-10-9 下午02:26:23<br>
   * </strong>
   * <p>
   * 
   * @param productionOrderDetailId
   * @return List<POConfirmOperation>
   * @throws
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<ProductionOperation> selectProductionOperationByPC(@Param("siteCode") String siteCode,
                                                          @Param("productionControlNum") String productionControlNum);

  /**
   * 
   * <strong>Title : insertProductionConfirm<br></strong>
   * <strong>Description : </strong>新增报工明细<br> 
   * <strong>Create on : 2016年5月18日 下午5:33:51<br></strong>
   * <p>
   * @param productionConfirm
   * void
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void insertProductionConfirm(ProductionConfirm productionConfirm);

  /**
   * 
   * <strong>Title : updateProductionOperation<br></strong>
   * <strong>Description : </strong>更新确认点信息<br> 
   * <strong>Create on : 2016年5月19日 上午9:31:17<br></strong>
   * <p>
   * @param productionOperation
   * void
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void updateProductionOperation(ProductionOperation productionOperation);

  /**
   * 
   * <strong>Title : selectProductionOperation<br></strong>
   * <strong>Description : </strong>查询确认点信息<br> 
   * <strong>Create on : 2016年5月19日 上午9:26:23<br></strong>
   * <p>
   * @param siteCode
   * @param productionControlNum
   * @param processOperationId
   * @return
   * ProductionOperation
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  ProductionOperation selectProductionOperation(@Param("siteCode") String siteCode,
      @Param("productionControlNum") String productionControlNum,
      @Param("processOperationId") Long processOperationId);

  /**
   * 主键获取
   * @param id
   * @return
   */
  ProductionOperation getProductionOperationByPk(Long id);
  /**
   * 
   * <strong>Title : selectLastOperationCompletedQuantity<br></strong>
   * <strong>Description : </strong>查询最后一道工序的完工数量<br> 
   * <strong>Create on : 2016年10月27日 上午10:54:00<br></strong>
   * <p>
   * @param siteCode
   * @param productionControlNum
   * @return
   * int
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  int selectLastOperationCompletedQuantity(@Param("siteCode") String siteCode,@Param("productionControlNum") String productionControlNum);

  /**
   * 总条数
   * @param condition
   * @return
   */
  long countProductionOperation(ProductionOperationCondition condition);

  /**
   * 条件查询
   * @param condition
   * @return
   */
  List<ProductionOperation> listProductionOperation(ProductionOperationCondition condition);
}
